package com.sheng.leetcode.year2022.month07.day21;

import org.junit.Test;

import java.util.Arrays;

/**
 * @author liusheng
 * @date 2022/07/21
 *
 * 面试题 17.14. 最小K个数
 *
 * 设计一个算法，找出数组中最小的k个数。以任意顺序返回这k个数均可。
 *
 * 示例：
 * 输入： arr = [1,3,5,7,2,4,6,8], k = 4
 * 输出： [1,2,3,4]
 * 提示：
 *
 * 0 <= len(arr) <= 100000
 * 0 <= k <= min(100000, len(arr))
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/smallest-k-lcci
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class LeetCodeSmallestK {

    @Test
    public void test01() {
        int[] arr = {1,3,5,7,2,4,6,8};
        int k = 4;
        int[] ints = new Solution1().smallestK(arr, k);
        for (int i = 0; i < ints.length; i++) {
            System.out.println(ints[i]);
        }
    }

}
class Solution1 {
    public int[] smallestK(int[] arr, int k) {
        //一、看到题目后第一个想到的解法，排序后进行截取
        Arrays.sort(arr);
        return Arrays.copyOf(arr, k);
    }
}
